home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / glibc108.zip / glibc108 / sysdeps / unix / sysv / sco3.2.4 / __waitpid.S < prev    next >
Text File  |  1994-03-01  |  1KB  |  35 lines

  1. /* Copyright (C) 1993, 1994 Free Software Foundation, Inc.
  2. This file is part of the GNU C Library.
  3.  
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Library General Public License as
  6. published by the Free Software Foundation; either version 2 of the
  7. License, or (at your option) any later version.
  8.  
  9. The GNU C Library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. Library General Public License for more details.
  13.  
  14. You should have received a copy of the GNU Library General Public
  15. License along with the GNU C Library; see the file COPYING.LIB.  If
  16. not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  17. Cambridge, MA 02139, USA.  */
  18.  
  19. #include <sysdep.h>
  20.  
  21. ENTRY (__waitpid)
  22.     /* The `waitpid' system call is distinguished from plain
  23.        `wait' by setting lots of bits in the processor flags.  */
  24.     pushfl            /* Push the flags word.  */
  25.     popl %eax        /* Pop it into the accumulator.  */
  26.     orl $0x8c4, %eax    /* Set lots of bits.  */
  27.     pushl %eax        /* Push the new flags word.  */
  28.     popfl            /* Pop it into the flags.  */
  29.     DO_CALL (wait, 2)
  30.     movl 8(%esp), scratch    /* Put status pointer in scratch register.  */
  31.     testl scratch, scratch    /* Is it non-nil?  */
  32.     je null
  33.     movl r1, (scratch)    /* Yes; store the status there.  */
  34. null:    ret
  35.